import { Controller, Get, Delete, Param, Query, Post, UseInterceptors, UploadedFile } from '@nestjs/common';
import { UploadService } from './upload.service';
import { Admin } from '../../common/decorators/admin.decorator';
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiTags, ApiOperation, ApiResponse, ApiBody, ApiParam, ApiQuery, ApiConsumes } from '@nestjs/swagger';

@ApiTags('上传管理（管理员）')
@Controller('api/admin/upload')
export class UploadAdminController {
  constructor(private readonly uploadService: UploadService) {}

  // // 上传图片（管理员）
  // @Admin()
  // @Post('image')
  // @UseInterceptors(FileInterceptor('file'))
  // @ApiConsumes('multipart/form-data')
  // @ApiOperation({
  //   summary: '上传图片',
  //   description: '管理员上传图片文件',
  // })
  // @ApiBody({
  //   schema: {
  //     type: 'object',
  //     properties: {
  //       file: {
  //         type: 'string',
  //         format: 'binary',
  //         description: '图片文件',
  //       },
  //       type: {
  //         type: 'string',
  //         description: '图片类型（可选）',
  //         example: 'avatar',
  //       },
  //     },
  //   },
  // })
  // @ApiResponse({
  //   status: 200,
  //   description: '上传成功',
  // })
  // @ApiResponse({
  //   status: 403,
  //   description: '无管理员权限',
  // })
  // @ApiResponse({
  //   status: 400,
  //   description: '上传失败',
  // })
  // uploadImage(@UploadedFile() file: Express.Multer.File, @Query('type') type?: string) {
  //   return this.uploadService.uploadImage(file, type);
  // }

  // // 上传文件（管理员）
  // @Admin()
  // @Post('file')
  // @UseInterceptors(FileInterceptor('file'))
  // @ApiConsumes('multipart/form-data')
  // @ApiOperation({
  //   summary: '上传文件',
  //   description: '管理员上传普通文件',
  // })
  // @ApiBody({
  //   schema: {
  //     type: 'object',
  //     properties: {
  //       file: {
  //         type: 'string',
  //         format: 'binary',
  //         description: '文件',
  //       },
  //       type: {
  //         type: 'string',
  //         description: '文件类型（可选）',
  //         example: 'document',
  //       },
  //     },
  //   },
  // })
  // @ApiResponse({
  //   status: 200,
  //   description: '上传成功',
  // })
  // @ApiResponse({
  //   status: 403,
  //   description: '无管理员权限',
  // })
  // @ApiResponse({
  //   status: 400,
  //   description: '上传失败',
  // })
  // uploadFile(@UploadedFile() file: Express.Multer.File, @Query('type') type?: string) {
  //   return this.uploadService.uploadFile(file, type);
  // }

  // // 获取上传文件列表（管理员）
  // @Admin()
  // @Get('files')
  // @ApiOperation({
  //   summary: '获取上传文件列表',
  //   description: '管理员获取系统中的所有上传文件，支持分页和筛选',
  // })
  // @ApiQuery({
  //   name: 'page',
  //   description: '页码',
  //   example: 1,
  //   required: false,
  // })
  // @ApiQuery({
  //   name: 'pageSize',
  //   description: '每页数量',
  //   example: 10,
  //   required: false,
  // })
  // @ApiQuery({
  //   name: 'type',
  //   description: '文件类型（可选）',
  //   required: false,
  // })
  // @ApiQuery({
  //   name: 'userId',
  //   description: '上传用户ID（可选）',
  //   required: false,
  // })
  // @ApiResponse({
  //   status: 200,
  //   description: '获取成功',
  // })
  // @ApiResponse({
  //   status: 403,
  //   description: '无管理员权限',
  // })
  // getFiles(
  //   @Query('page') page: number = 1,
  //   @Query('pageSize') pageSize: number = 10,
  //   @Query('type') type?: string,
  //   @Query('userId') userId?: number
  // ) {
  //   return this.uploadService.getFiles(page, pageSize, type, userId);
  // }

  // // 删除文件（管理员）
  // @Admin()
  // @Delete('files/:id')
  // @ApiOperation({
  //   summary: '删除文件',
  //   description: '管理员删除指定的上传文件',
  // })
  // @ApiParam({
  //   name: 'id',
  //   description: '文件记录ID',
  //   example: '1',
  // })
  // @ApiResponse({
  //   status: 200,
  //   description: '删除成功',
  // })
  // @ApiResponse({
  //   status: 403,
  //   description: '无管理员权限',
  // })
  // @ApiResponse({
  //   status: 404,
  //   description: '文件不存在',
  // })
  // deleteFile(@Param('id') id: number) {
  //   return this.uploadService.deleteFile(id);
  // }

  // // 清理过期文件（管理员）
  // @Admin()
  // @Delete('cleanup')
  // @ApiOperation({
  //   summary: '清理过期文件',
  //   description: '管理员清理临时或过期的文件',
  // })
  // @ApiResponse({
  //   status: 200,
  //   description: '清理成功',
  // })
  // @ApiResponse({
  //   status: 403,
  //   description: '无管理员权限',
  // })
  // cleanupFiles() {
  //   return this.uploadService.cleanupFiles();
  // }
}